home *** CD-ROM | disk | FTP | other *** search
/ Everything For A Hacker / 19990506-[HACK].iso / SECURE / CRYPT / GOST.ZIP / GOST.H < prev    next >
Text File  |  1997-11-08  |  4KB  |  112 lines

  1. /*----------------------------------------------------
  2.   gost.h -- «»¿ßá¡¿∩ ñá¡¡δσ ¿  »α«Γ«Γ¿»δ Σπ¡¬µ¿⌐ Φ¿Σ-
  3.         α«óá¡¿∩.
  4.   ----------------------------------------------------
  5.   éÑαß¿∩ 1.01 «Γ 09.11.97, (c)1994,1997 é¿¡«¬πα«ó Ç.₧.
  6.   (çñÑß∞ ºá½«ªÑ¡δ ¡Ñ¬«Γ«δѠ󫺼«ª¡«ßΓ¿ ¡á íπñπΘÑÑ)
  7.   ----------------------------------------------------
  8.   éáα¿á¡Γδ ¬«¼»¿½∩µ¿¿:
  9.   æ¿¼ó«½ VarKey:
  10.   - Ñß½¿ ¡Ñ «»αÑñѽѡ, ñ½¿¡á ¬½ετá ó Σπ¡¬µ¿∩σ Φ¿Σα«-
  11.     óá¡¿∩ Σ¿¬ß¿α«óá¡á ¿ ¡Ñ »ÑαÑñáÑΓß∩ ¬á¬ »áαá¼ÑΓα;
  12.   - Ñß½¿ «»αÑñѽѡ, ñ½¿¡á ¬½ετá »ÑαÑñáÑΓß∩ ¬á¬ »áαá-
  13.     ¼ÑΓα ó Σπ¡¬µ¿¿ Φ¿Σα«óá¡¿∩;
  14.   ----------------------------------------------------
  15. */
  16.  
  17. typedef unsigned long  Item;    // φ½Ñ¼Ñ¡Γ ñá¡¡δσ
  18. typedef unsigned short word;    // τ¿ß½«
  19.  
  20. typedef struct            // ¬α¿»Γ«í½«¬
  21. {
  22.   Item low,high;
  23. } CrBlock;
  24.  
  25. void ExpCht (        // ÉáßΦ¿αÑ¡¿Ñ Γáí½¿µδ ºá¼Ñ¡
  26.   Item far *source,     //   «í½áßΓ∞ ¿ßσ«ñ¡«⌐ Æç
  27.   Item far *target);    //   «í½áßΓ∞ αáßΦ¿αÑ¡¡«⌐ Æç
  28.  
  29. void ExpandKey (        // ïεí«Ñ αáßΦ¿αÑ¡¿Ñ ¬½ετá
  30.   Item far *source,     //   «í½áßΓ∞ ¿ßσ«ñ¡«ú« ¬½ετá
  31.   Item far *target,     //   «í½áßΓ∞ αáßΦ¿αÑ¡. ¬½ετá
  32.   word KeyLength,    //   αẼÑα ¬½ετá
  33.   word KeyRepeat,       //   τ¿ß½« »«óΓ«αÑ¡¿⌐ ¬½ετá
  34.   word ReapeatMask,...);//   ¼á߬ᠻ«óΓ«αÑ¡¿⌐ ¬½ετá
  35.  
  36. void ExpKey31 (         // ÉáßΦ¿αÑ¡¿Ñ ¬½ετá '3+1'
  37.   Item far *source,     //   «í½áßΓ∞ ¿ßσ«ñ¡«ú« ¬½ετá
  38.   Item far *target);    //   «í½áßΓ∞ αáßΦ¿αÑ¡. ¬½ετá
  39.  
  40. void ExpKey33 (         // ÉáßΦ¿αÑ¡¿Ñ ¬½ετá '3+3'
  41.   Item far *source,     //   «í½áßΓ∞ ¿ßσ«ñ¡«ú« ¬½ετá
  42.   Item far *target);    //   «í½áßΓ∞ αáßΦ¿αÑ¡. ¬½ετá
  43.  
  44. void ExpKey13 (         // ÉáßΦ¿αÑ¡¿Ñ ¬½ετá '1+3'
  45.   Item far *source,     //   «í½áßΓ∞ ¿ßσ«ñ¡«ú« ¬½ετá
  46.   Item far *target);    //   «í½áßΓ∞ αáßΦ¿αÑ¡. ¬½ετá
  47.  
  48. void gamma  (           // âá¼¼¿α«óá¡¿Ñ ñá¡¡δσ
  49.   Item far *key,        //   áñαÑß ¬½ετá
  50.   Item far *synchro,    //   áñαÑß ß¿¡σα«»«ß佬¿
  51.   void far *xcht,    //   áñαÑß Γáí½¿µδ ºá¼Ñ¡
  52.   void far *data,       //   áñαÑß úá¼¼¿απѼδσ ñá¡¡δσ
  53.   unsigned short blocks //   τ¿ß½« Φ¿ΣαπѼδσ í½«¬«ó
  54. #ifdef VarKey
  55.  ,unsigned short keylen //   ñ½¿¡á ¬½ετá ó φ½Ñ¼Ñ¡Γáσ
  56. #endif
  57.   );
  58.  
  59. void gamme  (           // éδαáí«Γ¬á úá¼¼δ
  60.   Item far *key,        //   áñαÑß ¬½ετá
  61.   Item far *synchro,    //   áñαÑß ß¿¡σα«»«ß佬¿
  62.   void far *xcht,    //   áñαÑß Γáí½¿µδ ºá¼Ñ¡
  63.   void far *data,       //   áñαÑß úá¼¼¿απѼδσ ñá¡¡δσ
  64.   unsigned short blocks //   τ¿ß½« Φ¿ΣαπѼδσ í½«¬«ó
  65. #ifdef VarKey
  66.  ,unsigned short keylen //   ñ½¿¡á ¬½ετá ó φ½Ñ¼Ñ¡Γáσ
  67. #endif
  68.   );
  69.  
  70. void gammaLE(           // çáΦ¿Σα«óá¡¿Ñ-úá¼¼¿α. ß Äæ
  71.   Item far *key,        //   áñαÑß ¬½ετá
  72.   Item far *synchro,    //   áñαÑß ß¿¡σα«»«ß佬¿
  73.   void far *xcht,    //   áñαÑß Γáí½¿µδ ºá¼Ñ¡
  74.   void far *data,       //   áñαÑß úá¼¼¿απѼδσ ñá¡¡δσ
  75.   unsigned short blocks //   τ¿ß½« Φ¿ΣαπѼδσ í½«¬«ó
  76. #ifdef VarKey
  77.  ,unsigned short keylen //   ñ½¿¡á ¬½ετá ó φ½Ñ¼Ñ¡Γáσ
  78. #endif
  79.   );
  80.  
  81. void gammaLD(           // ÉáßΦ¿Σα«óá¡¿Ñ-úá¼¼¿α. ß Äæ
  82.   Item far *key,        //   áñαÑß ¬½ετá
  83.   Item far *synchro,    //   áñαÑß ß¿¡σα«»«ß佬¿
  84.   void far *xcht,    //   áñαÑß Γáí½¿µδ ºá¼Ñ¡
  85.   void far *data,       //   áñαÑß úá¼¼¿απѼδσ ñá¡¡δσ
  86.   unsigned short blocks //   τ¿ß½« Φ¿ΣαπѼδσ í½«¬«ó
  87. #ifdef VarKey
  88.  ,unsigned short keylen //   ñ½¿¡á ¬½ετá ó φ½Ñ¼Ñ¡Γáσ
  89. #endif
  90.   );
  91.  
  92. void simple(            // ÿ¿Σα«óá¡¿Ñ »α«ßΓ«⌐ ºá¼Ñ¡«⌐
  93.   Item far *key,        //   áñαÑß ¬½ετá
  94.   void far *data,       //   áñαÑß Φ¿ΣαπѼδσ ñá¡¡δσ
  95.   void far *xcht,    //   áñαÑß Γáí½¿µδ ºá¼Ñ¡
  96.   unsigned short blocks //   τ¿ß½« Φ¿ΣαπѼδσ í½«¬«ó
  97. #ifdef VarKey
  98.  ,unsigned short keylen //   ñ½¿¡á ¬½ετá ó φ½Ñ¼Ñ¡Γáσ
  99. #endif
  100.   );
  101.  
  102. Item imito  (           // éδτ¿ß½Ñ¡¿Ñ ¿¼¿Γ«»α¿ßΓáó¬¿
  103.   Item far *key,        //   áñαÑß ¬½ετá
  104.   Item far *combine,    //   áñαÑß ¡áτá½∞¡«⌐ ¬«¼í¿¡áµ¿¿
  105.   void far *xcht,    //   áñαÑß Γáí½¿µδ ºá¼Ñ¡
  106.   void far *data,       //   áñαÑß úá¼¼¿απѼδσ ñá¡¡δσ
  107.   unsigned short blocks //   τ¿ß½« í½«¬«ó
  108. #ifdef VarKey
  109.  ,unsigned short keylen //   ñ½¿¡á ¬½ετá ó φ½Ñ¼Ñ¡Γáσ
  110. #endif
  111.   );
  112.